package com.clementheliou.cheliou.dal.model.photo.enumeration;

/**
 * Enumeration dedicated to the flash modes.
 * 
 * @author Clément HELIOU (clement.heliou@gmail.com)
 * @since 1.0
 */
public enum FlashMode {

	/**
	 * Auto mode.
	 * 
	 * @author Clément HELIOU (clement.heliou@gmail.com)
	 * @since 1.0
	 */
	AUTO_MODE("enum_flash_mode_auto_mode"),

	/**
	 * Compulsory flash firing.
	 * 
	 * @author Clément HELIOU (clement.heliou@gmail.com)
	 * @since 1.0
	 */
	COMPULSORY_FLASH_FIRING("enum_flash_mode_compulsory_flash_firing"),

	/**
	 * Compulsory flash suppression.
	 * 
	 * @author Clément HELIOU (clement.heliou@gmail.com)
	 * @since 1.0
	 */
	COMPULSORY_FLASH_SUPPRESSION("enum_flash_mode_compulsory_flash_suppression"),

	/**
	 * Flash did not fire.
	 * 
	 * @author Clément HELIOU (clement.heliou@gmail.com)
	 * @since 1.0
	 */
	FLASH_DID_NOT_FIRE("enum_flash_mode_flash_did_not_fire"),

	/**
	 * Flash fired.
	 * 
	 * @author Clément HELIOU (clement.heliou@gmail.com)
	 * @since 1.0
	 */
	FLASH_FIRED("enum_flash_mode_flash_fired"),

	/**
	 * Flash function present.
	 * 
	 * @author Clément HELIOU (clement.heliou@gmail.com)
	 * @since 1.0
	 */
	FLASH_FUNCTION_PRESENT("enum_flash_mode_flash_function_present"),

	/**
	 * No flash function.
	 * 
	 * @author Clément HELIOU (clement.heliou@gmail.com)
	 * @since 1.0
	 */
	NO_FLASH_FUNCTION("enum_flash_mode_no_flash_function"),

	/**
	 * NO red-eye reduction mode or unknown.
	 * 
	 * @author Clément HELIOU (clement.heliou@gmail.com)
	 * @since 1.0
	 */
	NO_RED_EYE_REDUCTION_MODE_OR_UNKNOWN("enum_flash_mode_no_red_eye_reduction_mode_or_unknown"),

	/**
	 * No strobe return detection function.
	 * 
	 * @author Clément HELIOU (clement.heliou@gmail.com)
	 * @since 1.0
	 */
	NO_STROBE_RETURN_DETECTION_FUNCTION("enum_flash_mode_no_strobe_return_detection_function"),

	/**
	 * Red-eye reduction supported.
	 * 
	 * @author Clément HELIOU (clement.heliou@gmail.com)
	 * @since 1.0
	 */
	RED_EYE_REDUCTION_SUPPORTED("enum_flash_mode_red_eye_reduction_supported"),

	/**
	 * Strobe return light detected.
	 * 
	 * @author Clément HELIOU (clement.heliou@gmail.com)
	 * @since 1.0
	 */
	STROBE_RETURN_LIGHT_DETECTED("enum_flash_mode_strobe_return_light_detected"),

	/**
	 * Strobe return light not detected.
	 * 
	 * @author Clément HELIOU (clement.heliou@gmail.com)
	 * @since 1.0
	 */
	STROBE_RETURN_LIGHT_NOT_DETECTED("enum_flash_mode_strobe_return_light_not_detected");

	/**
	 * The key to be used to get the enumeration label translation.
	 * 
	 * @author Clément HELIOU (clement.heliou@gmail.com)
	 * @since 1.0
	 */
	private String labelKey;

	/**
	 * Constructor from a label key.
	 * 
	 * @author Clément HELIOU (clement.heliou@gmail.com)
	 * @param labelKey the label key to be used.
	 * @since 1.0
	 */
	private FlashMode(String labelKey) {
		this.labelKey = labelKey;
	}

	/*
	 * Getters & setters.
	 */

	public String getLabelKey() {
		return labelKey;
	}

	public void setLabelKey(String labelKey) {
		this.labelKey = labelKey;
	}

}
